/**
 * Create in 2012-4-18.
 */
package kit4j.view.cs.awt;

import java.lang.reflect.InvocationTargetException;

import javax.swing.SwingUtilities;

import kit4j.common.task.StepTask.StepTaskCallback;

/**
 * 组件分步变化操作抽象类。
 * 
 * @author MiniKnife
 * 
 */
public abstract class AbstractDynamicComponentStepOperator implements StepTaskCallback {

	/**
	 * 任务长度。
	 */
	private long taskLength;
	
	/**
	 * 组件分步变化操作对象。
	 * @param taskLength 任务长度
	 */
	public AbstractDynamicComponentStepOperator(long taskLength) {
		setTaskLength(taskLength);
	}

	/**
	 * 运行并等待指定的任务结束。
	 * @param doRun 要运行的任务
	 * @throws InterruptedException
	 * @throws InvocationTargetException
	 * @see javax.swing.SwingUtilities#invokeAndWait(Runnable)
	 */
	protected void invokeAndWait(Runnable doRun) throws InterruptedException, InvocationTargetException {
		SwingUtilities.invokeAndWait(doRun);
	}

	/**
	 * 设置任务长度。
	 * @param taskLength 任务长度
	 */
	protected void setTaskLength(long taskLength) {
		this.taskLength = taskLength;
	}

	/**
	 * @see kit4j.common.task.StepTask.StepTaskCallback#getTaskLength()
	 */
	@Override
	public long getTaskLength() {
		return taskLength;
	}

}
